package com.ruoyi.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TimeRangeUtil {

    private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");

    /**
     * 根据时间范围计算工时
     *
     * @param timeRange 时间范围字符串（如 "08:30 - 12:00"）
     * @return 工时（小时）
     * @throws ParseException 时间解析异常
     */
    public static float calculateWorkHours(String timeRange) throws ParseException {
        if (timeRange == null || !timeRange.contains("-")) {
            throw new IllegalArgumentException("时间范围格式错误，正确格式应为 'HH:mm - HH:mm'");
        }

        // 拆分时间范围
        String[] times = timeRange.split("-");
        if (times.length != 2) {
            throw new IllegalArgumentException("时间范围格式错误，正确格式应为 'HH:mm - HH:mm'");
        }

        // 解析时间
        Date startTime = TIME_FORMAT.parse(times[0].trim());
        Date endTime = TIME_FORMAT.parse(times[1].trim());

        // 计算时间差（以小时为单位）
        long diffMillis = endTime.getTime() - startTime.getTime();
        if (diffMillis < 0) {
            throw new IllegalArgumentException("结束时间不能早于开始时间");
        }

        return diffMillis / (1000f * 60 * 60); // 转换为小时
    }
}
